using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._DataManagementTools._ProjectionsandTransformations
{
    /// <summary>
    /// <para>Create Custom Geographic Transformation</para>
    /// <para>Creates a transformation method for converting data between two geographic coordinate systems or datums. The output of this tool can be used as a transformation method for any tool with a parameter that requires a geographic transformation.</para>
    /// <para>创建用于在两个地理坐标系或基准面之间转换数据的变换方法。此工具的输出可用作具有需要地理变换参数的任何工具的变换方法。</para>
    /// </summary>    
    [DisplayName("Create Custom Geographic Transformation")]
    public class CreateCustomGeoTransformation : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public CreateCustomGeoTransformation()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_geot_name">
        /// <para>Geographic Transformation Name</para>
        /// <para><xdoc>
        ///   <para>Name of the custom transformation method.</para>
        ///   <para>All custom geographic transformation files are saved with a .gtf extension and stored in the ESRI\<ArcGIS product>\ArcToolbox\CustomTransformations folder in the user's Application Data folder. The CustomTransformations folder is created by the tool if it does not exist. If the Application Data folder is read-only or hidden, the output is created in ArcToolbox\CustomTransformations in the user's temp folder. The location or name of the Application Data and temp folders is dependent on the operating system.
        ///   <bulletList>
        ///     <bullet_item>In any Windows operating system the Application Data folder is located in %appdata% and a user's Temp folder is located in %temp%. Entering %appdata% in a command window returns the Application Data folder location. Entering %temp% returns the temp folder location.  </bullet_item><para/>
        ///     <bullet_item>In Unix systems, the tmp and Application Data folders are located in the user's home directory, under $HOME and $TMP, respectively. Typing /tmp in a terminal returns the location.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>自定义转换方法的名称。</para>
        /// <para>所有自定义地理变换文件均以 .gtf 扩展名保存，并存储在用户应用程序数据文件夹的 ESRI\<ArcGIS product>\ArcToolbox\CustomTransformations 文件夹中。如果 CustomTransformations 文件夹不存在，则由该工具创建。如果应用程序数据文件夹是只读或隐藏的，则将在用户临时文件夹的 ArcToolbox\CustomTransformations 中创建输出。应用程序数据和临时文件夹的位置或名称取决于操作系统。
        ///   <bulletList>
        ///     <bullet_item>在任何 Windows 操作系统中，Application Data 文件夹位于 %appdata% 中，用户的 Temp 文件夹位于 %temp% 中。在命令窗口中输入 %appdata% 将返回应用程序数据文件夹位置。输入 %temp% 将返回临时文件夹位置。 </bullet_item><para/>
        ///     <bullet_item>在 Unix 系统中，tmp 和 Application Data 文件夹分别位于用户主目录的 $HOME 和 $TMP 下。在终端中键入 /tmp 将返回位置。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// </param>
        /// <param name="_in_coor_system">
        /// <para>Input Geographic Coordinate System</para>
        /// <para>The starting geographic coordinate system.</para>
        /// <para>起始地理坐标系。</para>
        /// </param>
        /// <param name="_out_coor_system">
        /// <para>Output Geographic Coordinate System</para>
        /// <para>The final geographic coordinate system.</para>
        /// <para>最终的地理坐标系。</para>
        /// </param>
        /// <param name="_custom_geot">
        /// <para>Custom Geographic Transformation</para>
        /// <para>Select a transformation method from the drop-down list that will be used to transform the data from the input geographic coordinate system to the output geographic coordinate system. Once chosen, its parameters will appear in the table for editing.</para>
        /// <para>从下拉列表中选择一种变换方法，该方法将用于将数据从输入地理坐标系转换为输出地理坐标系。选择后，其参数将出现在表格中以供编辑。</para>
        /// </param>
        public CreateCustomGeoTransformation(object _geot_name, object _in_coor_system, object _out_coor_system, object _custom_geot)
        {
            this._geot_name = _geot_name;
            this._in_coor_system = _in_coor_system;
            this._out_coor_system = _out_coor_system;
            this._custom_geot = _custom_geot;
        }
        public override string ToolboxName => "Data Management Tools";

        public override string ToolName => "Create Custom Geographic Transformation";

        public override string CallName => "management.CreateCustomGeoTransformation";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_geot_name, _in_coor_system, _out_coor_system, _custom_geot];

        /// <summary>
        /// <para>Geographic Transformation Name</para>
        /// <para><xdoc>
        ///   <para>Name of the custom transformation method.</para>
        ///   <para>All custom geographic transformation files are saved with a .gtf extension and stored in the ESRI\<ArcGIS product>\ArcToolbox\CustomTransformations folder in the user's Application Data folder. The CustomTransformations folder is created by the tool if it does not exist. If the Application Data folder is read-only or hidden, the output is created in ArcToolbox\CustomTransformations in the user's temp folder. The location or name of the Application Data and temp folders is dependent on the operating system.
        ///   <bulletList>
        ///     <bullet_item>In any Windows operating system the Application Data folder is located in %appdata% and a user's Temp folder is located in %temp%. Entering %appdata% in a command window returns the Application Data folder location. Entering %temp% returns the temp folder location.  </bullet_item><para/>
        ///     <bullet_item>In Unix systems, the tmp and Application Data folders are located in the user's home directory, under $HOME and $TMP, respectively. Typing /tmp in a terminal returns the location.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>自定义转换方法的名称。</para>
        /// <para>所有自定义地理变换文件均以 .gtf 扩展名保存，并存储在用户应用程序数据文件夹的 ESRI\<ArcGIS product>\ArcToolbox\CustomTransformations 文件夹中。如果 CustomTransformations 文件夹不存在，则由该工具创建。如果应用程序数据文件夹是只读或隐藏的，则将在用户临时文件夹的 ArcToolbox\CustomTransformations 中创建输出。应用程序数据和临时文件夹的位置或名称取决于操作系统。
        ///   <bulletList>
        ///     <bullet_item>在任何 Windows 操作系统中，Application Data 文件夹位于 %appdata% 中，用户的 Temp 文件夹位于 %temp% 中。在命令窗口中输入 %appdata% 将返回应用程序数据文件夹位置。输入 %temp% 将返回临时文件夹位置。 </bullet_item><para/>
        ///     <bullet_item>在 Unix 系统中，tmp 和 Application Data 文件夹分别位于用户主目录的 $HOME 和 $TMP 下。在终端中键入 /tmp 将返回位置。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Geographic Transformation Name")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _geot_name { get; set; }


        /// <summary>
        /// <para>Input Geographic Coordinate System</para>
        /// <para>The starting geographic coordinate system.</para>
        /// <para>起始地理坐标系。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Geographic Coordinate System")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_coor_system { get; set; }


        /// <summary>
        /// <para>Output Geographic Coordinate System</para>
        /// <para>The final geographic coordinate system.</para>
        /// <para>最终的地理坐标系。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Geographic Coordinate System")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_coor_system { get; set; }


        /// <summary>
        /// <para>Custom Geographic Transformation</para>
        /// <para>Select a transformation method from the drop-down list that will be used to transform the data from the input geographic coordinate system to the output geographic coordinate system. Once chosen, its parameters will appear in the table for editing.</para>
        /// <para>从下拉列表中选择一种变换方法，该方法将用于将数据从输入地理坐标系转换为输出地理坐标系。选择后，其参数将出现在表格中以供编辑。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Custom Geographic Transformation")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _custom_geot { get; set; }


        public CreateCustomGeoTransformation SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}